// 导入模型
// 导入图片模型
const ImagesModel = require('./ImagesModule')

// 导入省份模型
const ProvinceModel = require('./ProvinceModel')

// 导入城市模型
const CityModel = require('./CityModel');

// 导入景点模型
const SceneryModel = require('./SceneryModel');

// 导入景点预定信息模型
const SceneryReservationModel = require('./SceneryReservationModel');

// 导入酒店模型
const HotelModel = require('./HotelModel');

// 导入酒店预定信息模型
const HotelReservationModel = require('./HotelReservationModel');

// 导入餐厅模型
const RestaurantModel = require('./RestaurantModel');

// 导入餐厅预定信息模型
const RestaurantReservationModel = require('./RestaurantReservationModel');

// 导入攻略模型
const PostModel = require('./PostModel')

// 导入用户模型
const UserModel = require('./UserModel')

// 导入验证码模型
const CodeModel = require('./CodeModel')

// 导入收藏模型
const CollectionModel = require('./CollectionModel')

// 导入管理员模型
const AdminModel = require('./AdminModel')

// 导入订单模型
const OrderModel = require('./OrderModel')

// 导入评价模型
const EvaluateModel = require('./EvaluateModel')


// 建立模型之间的关联
// 建立省份模型和城市模型之间的一对多关联
ProvinceModel.hasMany(CityModel, { foreignKey: 'province_id', as: 'city' })
CityModel.belongsTo(ProvinceModel, { foreignKey: 'province_id', as: 'province' })

// 建立省份模型和景点模型之间的一对多关联
ProvinceModel.hasMany(SceneryModel, { foreignKey: 'province_id', as: 'scenery_province' })
SceneryModel.belongsTo(ProvinceModel, { foreignKey: 'province_id', as: 'scenery_locatedProvince' })

// 建立城市模型和景点模型之间的一对多关联
CityModel.hasMany(SceneryModel, { foreignKey: 'city_id', as: 'scenery_city' })
SceneryModel.belongsTo(CityModel, { foreignKey: 'city_id', as: 'scenery_locatedCity' })

// 建立城市模型和酒店模型之间的一对多关联
CityModel.hasMany(HotelModel, { foreignKey: 'city_id', as: 'hotel_city' })
HotelModel.belongsTo(CityModel, { foreignKey: 'city_id', as: 'hotel_locatedCity' })

// 建立城市模型和餐厅模型之间的一对多关联
CityModel.hasMany(RestaurantModel, { foreignKey: 'city_id', as: 'restaurant_city' })
RestaurantModel.belongsTo(CityModel, { foreignKey: 'city_id', as: 'restaurant_locatedCity' })

// 建立用户模型和攻略模型之间的一对多关联
UserModel.hasMany(PostModel, { foreignKey: 'user_id', as: 'post_user' })
PostModel.belongsTo(UserModel, { foreignKey: 'user_id', as: 'post_belongsUser' })

// 建立景点模型和景点预定信息模型之间的一对多关联
SceneryModel.hasMany(SceneryReservationModel, { foreignKey: 'scenery_id', as: 'scenery_reservation' })

// 建立酒店模型和酒店预定信息模型之间的一对多关联
HotelModel.hasMany(HotelReservationModel, { foreignKey: 'hotel_id', as: 'hotel_reservation' })

// 建立餐厅模型和餐厅预定信息模型之间的一对多关联
RestaurantModel.hasMany(RestaurantReservationModel, { foreignKey: 'restaurant_id', as: 'restaurant_reservation' })

// 建立用户表与订单表的一对多关联
UserModel.hasMany(OrderModel, { foreignKey: 'user_id', as: 'user_order' })
OrderModel.belongsTo(UserModel, { foreignKey: 'user_id', as: 'order_user' })

// 建立订单表与用户评价表的一对一关联
OrderModel.hasOne(EvaluateModel, { foreignKey: 'order_id', as: 'evaluation' })
EvaluateModel.belongsTo(OrderModel, { foreignKey: 'order_id', as: 'order' })

// 建立用户表与用户评价表的一对多关联
UserModel.hasMany(EvaluateModel, { foreignKey: 'user_id', as: 'evaluations' })
EvaluateModel.belongsTo(UserModel, { foreignKey: 'user_id', as: 'user' })

module.exports = {
  ImagesModel,
  ProvinceModel,
  CityModel,
  SceneryModel,
  SceneryReservationModel,
  HotelModel,
  HotelReservationModel,
  RestaurantModel,
  RestaurantReservationModel,
  PostModel,
  UserModel,
  CodeModel,
  CollectionModel,
  AdminModel,
  OrderModel,
  EvaluateModel
}